package pruebas;

import java.util.ArrayList;
import java.util.Vector;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;

import dtos.DTOCoordenadas;
import dtos.DTORespuestaAUnirseAPartida;
import logica.acciones.BusquedaRecorrido;
import logica.acciones.Coordenada;
import logica.acciones.Parametro;
import logica.acciones.PoolAcciones;
import logica.objetos.Barreminas;
import logica.objetos.Carguero;
import logica.objetos.Imagen;
import logica.objetos.Mapa;
import logica.objetos.Mina;
import logica.objetos.Minador;
import logica.objetos.Objeto;
import logica.objetos.Partida;
import persistencia.PoolTransacciones;
import Daos.Imagenes;
import Daos.Mapas;
import Daos.Objetos;
import Daos.Parametros;
import Daos.PartidasActivas;
import enums.TipoAccion;
import enums.TipoEstado;
import enums.TipoObjeto;
import excepciones.PersistenciaException;

public class PruebaTodo {

    /**
     * @param args
     */
    /**
     * @param args
     */
    /**
     * @param args
     */
    public static void main(String[] args) {
	// TODO Auto-generated method stub

	/*
	 * try {
	 * 
	 * 
	 * 
	 * PoolTransacciones pool = PoolTransacciones.getInstance(); Transaccion
	 * t = pool.obtenerTransaccion(); Mapas mps = new Mapas(); Mapa mp1 =
	 * mps.buscarMapa(t, 1); System.out.println("[");
	 * 
	 * for(int i = 0; i < mp1.getMatriz()[0].length; i++){
	 * System.out.print("["); for(int j = 0; j < mp1.getMatriz()[i].length;
	 * j++){ System.out.print(mp1.getMatriz()[i][j]); if(j <
	 * mp1.getMatriz()[i].length - 1){ System.out.print(","); } }
	 * System.out.println("]"); } //System.out.println("]");
	 * System.out.println(""); System.out.println("");
	 * 
	 * //Busca el recorrido mas corto entre 2 puntos evadiendo tierra
	 * BusquedaRecorrido astar = new BusquedaRecorrido(mp1.getMatriz(),
	 * 164); Coordenada inicio = new Coordenada(14,9); Coordenada destino =
	 * new Coordenada(13,2); //Vector de coordenadas que forman ese camino.
	 * Vector<Coordenada> path = astar.calculatePath(inicio, destino);
	 * 
	 * for(int i = 0; i < path.size(); i++){ System.out.print("{ x:" +
	 * path.get(i).getX() + ", y:" + path.get(i).getY() + " }"); }
	 * 
	 * 
	 * } catch (PersistenciaException e) { // TODO Auto-generated catch
	 * block e.printStackTrace(); }
	 */// ok
	/*
	 * ///Imagenes try { PoolTransacciones pool =
	 * PoolTransacciones.getInstance(); Transaccion t =
	 * pool.obtenerTransaccion(); Imagenes imgs = new Imagenes(); Imagen img
	 * = new Imagen(0, "Prueba", "/ProyectoICliente/img/Prueba.png"); //
	 * prueba de insertar // controlar que haya algun mapa ingresado a la
	 * tablas mapas, con el // id 1 int idImagen = imgs.insertarImagen(t,
	 * img); System.out.println("el id de la imagen recien ingresada es " +
	 * idImagen); // prueba de buscar por id, uso el mismo Imagen img1 =
	 * imgs.buscarPorId(t, 2);
	 * System.out.println("la descripcion y url de la imagen = " + 1 +
	 * " es " + img1.getDescripcion() + "," + img1.getUrl()); // Prueba
	 * busco todas las imagenes
	 * 
	 * Imagen ims[]=null; ims=imgs.listarTodos(t); for (Imagen imagen : ims)
	 * {
	 * 
	 * System.out.println("la descripcion y url de la imagen = " +
	 * imagen.getId() + " es " + imagen.getDescripcion() + "," +
	 * imagen.getUrl()); }
	 * 
	 * } catch (PersistenciaException e) { // TODO Auto-generated catch
	 * block e.printStackTrace(); }
	 */

	/*
	 * try { PoolTransacciones pool = PoolTransacciones.getInstance();
	 * Transaccion t = pool.obtenerTransaccion();
	 * 
	 * Parametros ps=new Parametros(); Parametro p=new Parametro(0, "4",
	 * "Prueba"); // prueba de insertar int idParametro =
	 * ps.insertarParametro(t,p);
	 * System.out.println("el id del parametro recien ingresado es " +
	 * idParametro); // prueba de buscar por id, uso el mismo Parametro
	 * p1=ps.buscarParametro(t, idParametro);
	 * 
	 * System.out.println("idparametro " + p1.getIdParametro() + " valor " +
	 * p1.getValor() + "descripcion" + p1.getDescripcion()); // Prueba busco
	 * todos los parametros Parametro psa[] = null;
	 * psa=ps.listarParametros(t);
	 * 
	 * for (Parametro parametro : psa) {
	 * 
	 * System.out.println("idparametro " + parametro.getIdParametro() +
	 * " valor " + parametro.getValor() + "descripcion" +
	 * parametro.getDescripcion()); }
	 * 
	 * String valor=ps.getValor(t, "movimientosporturno");
	 * System.out.println("idparametro " +valor.toString()); Parametro p2=
	 * new Parametro(1, "10", "movimientosporturno");
	 * ps.actualizarParametro(t, p2);
	 * 
	 * valor=ps.getValor(t, "movimientosporturno");
	 * System.out.println("valor " +valor.toString());
	 * 
	 * 
	 * } catch (PersistenciaException e) { // TODO Auto-generated catch
	 * block e.printStackTrace(); }
	 */// ok menos listar

	/*
	 * try { PoolTransacciones pool = PoolTransacciones.getInstance();
	 * Transaccion t = pool.obtenerTransaccion(); PartidasActivas partidas =
	 * new PartidasActivas(); //prueba de insertar //controlar que haya
	 * algun mapa ingresado a la tablas mapas, con el id 1
	 * 
	 * Partida id = partidas.iniciarPartida(t, "partida nueva", 1);
	 * System.out.println("el id de la partida recien ingresada es "+id);
	 * t.finalizarTransaccion(true); pool.liberarTransaccion(t); //prueba de
	 * buscar por id, uso el mismo t = pool.obtenerTransaccion(); Partida p
	 * = partidas.buscarPartidaPorId(t,"1");
	 * System.out.println("el estado de la partida con id = 1 es "+
	 * p.getEstado()); t.finalizarTransaccion(true);
	 * pool.liberarTransaccion(t); //prueba de busqueda por jugador t =
	 * pool.obtenerTransaccion(); String idJugador =
	 * p.getJ1().getIdentificador();// se busca el id de uno de los
	 * jugadores de la partida
	 * System.out.println("control del id del jugador a buscar: "
	 * +idJugador); int idPartida = partidas.buscarIdPartidaPorJugador(t,
	 * idJugador);
	 * System.out.println("el id de la partida con ese jugador es "
	 * +idPartida);
	 * System.out.println("prueba de busqueda de partida por id jugador");
	 * Partida p2 = partidas.buscarPartidaPorJugador(t, idJugador);
	 * System.out
	 * .println("el estado de la partida buscada es "+p2.getEstado());
	 * 
	 * ArrayList<Partida> parts = (ArrayList<Partida>)
	 * partidas.listarPartidasPorEstado(t, TipoEstado.ESPERANDO);
	 * 
	 * t.finalizarTransaccion(true); pool.liberarTransaccion(t); } catch
	 * (PersistenciaException e) { System.out.println(e.getMensaje());
	 * e.printStackTrace(); }
	 */
	try {
	    PoolTransacciones pool = PoolTransacciones.getInstance();
	    Connection t = pool.obtenerTransaccion();
	    Objetos objs = new Objetos();
	    PoolAcciones pol=new PoolAcciones();

	    Objeto o = new Barreminas();// prueba de insertar objeto
	    o.setImagen(1);
	    o.setTipo(TipoObjeto.BARREMINAS);
	    int idObj = objs.ingresarObjeto(t, o, 129);
	    System.out.println("el id del objeto recien ingresado es " + idObj);
	    // prueba de buscar por id, uso el mismo
	    Objeto ob1 = objs.buscarObjeto(t, idObj);
	    System.out.println("la datos del objeto = " + idObj + " es "
		    + ob1.getPosicionx() + "," + ob1.getPosiciony() + ","
		    + ob1.getImagen() + "," + ob1.getTipo());
	    Barreminas b1 = objs.buscarBarreminas(t, idObj);
	    o.setImagen(2);
	    b1.setEsImpactado(true);
	    b1.setDanio(5);
	    objs.actualizarBarreminas(t, b1);

	    System.out.println("la datos del objeto = " + idObj + " es "
		    + b1.getPosicionx() + "," + b1.getPosiciony() + ","
		    + b1.getDanio() + "," + b1.isEsImpactado());
	    // Ingresar barreminas
	    // Barreminas bm=new Barreminas(1, 1, 1, to, 5, 5, 5, 5, 5, 5,
	    // false, 0, 0);
	    // objs.ingresarBarreminas(t, bm, idObj);
	    //
	    // ingresar ingresar minador
	    Objeto o1 = new Minador();// prueba de insertar objeto
	    o1.setImagen(1);
	    o1.setTipo(TipoObjeto.BARCOMINADOR);
	    idObj = objs.ingresarObjeto(t, o1, 129);
	    System.out.println("el id del objeto recien ingresado es " + idObj);

	    // prueba de buscar por id, uso el mismo
	    Objeto ob3 = objs.buscarObjeto(t, idObj);
	    System.out.println("la datos del objeto minador ingersado = "
		    + idObj + " es " + ob3.getPosicionx() + ","
		    + ob3.getPosiciony() + "," + ob3.getImagen() + ","
		    + ob3.getTipo());
	    Minador m1 = objs.buscarMinador(t, idObj);
	    m1.setEsImpactado(true);
	    m1.setDanio(5);
	    objs.actualizarMinador(t, m1);
	    DTOCoordenadas punto= new DTOCoordenadas(m1.getPosicionx(), m1.getPosiciony());
   
	    
	    
	    System.out.println("la datos del objeto minador  = " + idObj
		    + " es " + b1.getPosicionx() + "," + b1.getPosiciony()
		    + "," + b1.getDanio() + "," + b1.isEsImpactado());
	    // ingresar ingresar minador
	    Objeto o5 = new Mina(1,1,1,1,TipoObjeto.MINASUBACUATICA,TipoObjeto.MINASUBACUATICA,1,false);// prueba de insertar objeto
	    o5.setImagen(1);
	    o5.setTipo(TipoObjeto.MINASUBACUATICA);
	    idObj = objs.ingresarObjeto(t, o5, 129);
	    System.out.println("el id del objeto recien ingresado es " + idObj);

	    // prueba de buscar por id, uso el mismo
	    Objeto ob6 = objs.buscarObjeto(t, idObj);
	    System.out.println("la datos del objeto minador ingersado = "
		    + idObj + " es " + ob6.getPosicionx() + ","
		    + ob6.getPosiciony() + "," + ob6.getImagen() + ","
		    + ob6.getTipo());
	    Mina mina = objs.buscarMina(t, idObj);
	    mina.setRadioexplosion(5);
	    mina.setPosiciony(6);
	    objs.actualizarMina(t, mina);

	    System.out.println("la datos del objeto minador  = " + idObj
		    + " es " + mina.getPosicionx() + "," + mina.getPosiciony()
		    + "," + mina.getTipoMina() + "," + mina.getRadioexplosion());
	    pool.finalizarTransaccion(t,true);
	    String i129="129";
	    punto.setX(1);
	    punto.setY(13);
	   
	    
	    
	} catch (PersistenciaException e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}

	/*
	 * try { PoolTransacciones pool = PoolTransacciones.getInstance();
	 * Connection t = pool.obtenerTransaccion();
	 * 
	 * Parametros pmt=new Parametros(); Parametro p = new
	 * Parametro(2,"5","PARAMETROPRUEBA");
	 * 
	 * int idparametro=pmt.insertarParametro(t, p);
	 * 
	 * Parametro p1=pmt.buscarParametro(t, idparametro);
	 * System.out.println("la datos del parametro = " + idparametro + " es "
	 * +p1.getDescripcion() + "," +
	 * p1.getValor()+",valor "+p1.getIdParametro());
	 * t.finalizarTransaccion(true);
	 * 
	 * 
	 * } catch(PersistenciaException e) { // TODO Auto-generated catch block
	 * e.printStackTrace();
	 * 
	 * }
	 */

    }

}
